#pragma once

struct IDog : public IUnknown
{
public:
    virtual HRESULT STDMETHODCALLTYPE Woof(
        /* [in] */ const unsigned char* lpString) = 0;

};

struct ICat : public IUnknown
{
public:
    virtual HRESULT STDMETHODCALLTYPE Meow(
        /* [in] */ const unsigned char* lpString) = 0;

};

struct IPig: public IUnknown
{
public:
    virtual HRESULT STDMETHODCALLTYPE Oink(
        /* [in] */ const unsigned char* lpString) = 0;

};

typedef IID CLSID;

#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
        EXTERN_C __declspec(selectany) const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}

MIDL_DEFINE_GUID(IID, IID_IDog,0x0503702E,0xB81C,0x44A5,0x9B,0xEB,0x2D,0xFD,0x16,0xE6,0x65,0x70);


MIDL_DEFINE_GUID(IID, IID_ICat,0xAB548B2A,0x3CC6,0x4DD3,0x9D,0x2C,0x79,0xE0,0x0C,0x50,0xD3,0xFE);


MIDL_DEFINE_GUID(IID, IID_IPig,0xC0BFD99A,0x4DB5,0x4559,0x8F,0xA2,0x09,0xB6,0x39,0x40,0xFB,0x8A);

MIDL_DEFINE_GUID(CLSID, CLSID_ANIMALS,0x1904BE9D,0x0377,0x453E,0x98,0x9A,0xC8,0xBA,0x4F,0x3F,0x94,0x0E);

